| Sintesi: sono descritte, in sintesi, la metodologia e le varie fasi, da eseguire in modo gerarchico dall'utente, per la correzione da effettuare secondo l'approccio deterministico |
Le regole di controllo, o edit, in un piano di compatibilità possono essere distinte in:
Una volta individuati i record i cui valori violano uno o più vincoli del piano di compatibilità, il problema diventa la localizzazione delle variabili i cui valori devono essere considerati errati e, in quanto tali, da sottoporre ad un passo di correzione.
Sia il problema della localizzazione dei record errati, sia quello dell'individuazione delle variabili che, per ogni record errato, sono da considerarsi responsabili della violazione di una o più regole di compatibilità, possono essere risolti adottando un approccio di tipo deterministico.
Per ogni record, o per gruppi di record, vengono cioè applicate regole che, se verificate, segnalano sicuramente la presenza di errori.
Ad esempio:
SE (sesso = maschio E professione = casalinga) ALLORA sussiste incompatibilità x.
Una regola di questo tipo non individua, di per sé, l'errore che ne causa l'attivazione: infatti, il valore non vero può celarsi in una o nell'altra delle variabili, o in entrambe.
Nell'approccio deterministico, una situazione di incompatibilità è seguita, contestualmente, dall'indicazione delle variabili che debbono considerarsi errate, e, in quanto tali, da imputare. Nell'esempio considerato avremo, per ipotesi:
SE (sesso = maschio E professione = casalinga) ALLORA sesso ¬ femmina
il che significa che, se in un record è attivata la condizione di incompatibilità "maschio e casalinga", nella regola stessa viene indicata l'azione da effettuare per correggere l'errore, che consiste nell'imputare la modalità "femmina" alla variabile sesso.
Generalizzando, una volta attivate, mediante le regole di compatibilità, una o più condizioni di errore in un dato record, sono determinate a priori le azioni da intraprendere per riportare il medesimo record in una situazione di correttezza.
Le procedure deterministiche sono generalmente costituite da regole di imputazione deterministica, dette R.I.D., del tipo:
SE (incompatibilità) ALLORA (localizzazione e correzione errore)
La condizione di incompatibilità esprime relazioni inammissibili intercorrenti tra due o più variabili; la localizzazione consiste nell’indicazione di quali variabili considerare errate e quali valori assegnare per correggerle. Un record, durante l'esecuzione della procedura di correzione, potrà causare l'attivazione delle regole in corrispondenza delle quali è verificata la parte SE: in tal caso, eventualmente, saranno modificate le variabili indicate nella parte ALLORA assegnando loro valori predefiniti o scelti in altro modo.
In CONCORD le regole di imputazione deterministica possono essere del tipo:
SE (incompatibilità) [ALLORA (localizzazione e correzione errore)].
Può essere, cioè, definita la sola incompatibilità
applicando, eventualmente, la localizzazione e correzione dell'errore.
Figura 6.1 - Le funzioni di definizione
6.1.1. Definizione delle variabili
Vengono trattate sia variabili qualitative che quantitative registrate in un file in ASCII con caratteri di tipo testo su record di lunghezza fissa. Per definire le variabili è necessario avere il piano di registrazione, del questionario in esame, e il tracciato record nel quale siano indicate le posizioni iniziali e le lunghezze dei vari campi.
E' possibile definire solamente le variabili che vogliamo sottoporre a controllo per un massimo di 500; il resto del record verrà ricopiato senza modifiche.
Per ogni variabile e' necessario indicare:
ETA Alfabetica, posizione 1, lunghezza 1;
SESSO Alfabetica, posizione 5, lunghezza 1;
REDDIT Numerica, posizione 345, lunghezza 7, decimali 0;
Le posizioni e lunghezze si possono sovrapporre permettendo la ridefinizione.
I dati sui record riferiti ad una variabile numerica devono essere allineati a destra e completati con zeri iniziali; una variabile definita numerica "N" permette algoritmi di tipo aritmetico nelle regole di controllo e di correzione.
Nel riquadro variabile:
"add/mod" salva le modifiche di una variabile;
"clear" annulla tutte le modifiche di una variabile.
Da menu a tendina "File":
Le variabili lista, create per agevolare la scrittura delle regole, sono variabili associate a liste di valori, oppure associate ad un file esterno, ordinato in senso ascendente per la zona del record interessata ai valori da prendere in considerazione.
Definendo una variabile tipo lista possiamo poi, nelle regole, confrontarla con qualsiasi variabile di tipo alfanumerico "A", e il confronto verrà automaticamente effettuato con tutti i valori della lista.
La variabile lista deve essere inserita con:
Esempio di variabile lista associata ad un file esterno:
Nome lista: LISCOM; File di riferimento: C:\fdl\comuni.dat; Posizione:
3; Lunghezza: 6
la variabile lista si chiama "LISCOM" e i valori di lista si trovano
registrati nel file "C:\fdl\comuni.dat" nelle posizioni 3-8 di ogni record.
Nelle regole potremo scrivere:
[se] COMUNE = LISCOM e in esecuzione la variabile COMUNE sarà
confrontata con tutti i record del file "C:\comuni\comuni.dat" da posizione
3 a 8;
Se la variabile lista non è associata ad un file che contiene
i valori allora:
inserimento della variabile lista:
Valori di una variabile lista:
inserimento dei valori:
Alla fine delle operazioni "add/mod" nella zona "LISTA" e il nome della lista viene mostrato nell'apposita listbox;
Da menu a tendina "File":
Le regole di controllo definite per l'approccio deterministico, similmente a quelle dell'approccio probabilistico, sono regole di incompatibilità; bisogna, quindi, descrivere una condizione che, se verificata, determina un errore.
Una regola di incompatibilità è formata da un'espressione di variabili, costanti e operatori, unite da "and" o "or" e racchiuse, se necessario, tra vari ordini di parentesi "( )".
La scrittura di una regola di incompatibilità segue, praticamente, la sintassi di uno statement "IF", non nidificato, del SAS base con omessa la "IF" iniziale.
Le regole di incompatibilità che iniziano con un "#" sono considerate commenti.
Gli operatori che, in una regola, mettono in relazione tra loro variabili e costanti sono di tipo:
Si possono usare indifferentemente i simboli doppi, quali ">" o "gt", "&" o "and", ecc.
Esempi di regole:
1) #------ esempio di regola ------------- (commento)
2) sesso = 2 and profes = list1
(se sesso uguale a 2 e professione uguale a un valore contenuto
nella lista list1 allora il record è errato)
3) ateco ne listac and ((totdip > 1200 & salar < 1200000)
or (totdip < 1201 & salar < 1100000))
(se ateco diverso dai valori della lista listac e, il totale dei
dipendenti è maggiore di 1200 e il salario minore di 1200000, oppure
il totale dei dipendenti è minore di 1201 e il salario minore di
1100000 allora il record è errato).
Per inserire una regola:
Attenzione! Per inserire una nuova regola dopo una determinata regola selezionare quest'ultima con un solo click del mouse;
Per modificare una regola:
Per cancellare una regola:
"clear" annulla le modifiche della regola.
Da menu a tendina "File":
Nell'approccio deterministico è fondamentale poter far seguire alla condizione "IF" anche il relativo "THEN", con il quale assegnare valori ad una o più variabili indicate dall'utente.
Quindi una regola di correzione è l'assegnazione di un'espressione aritmetica o di una costante o di una variabile ad una data variabile, al verificarsi di un errore determinato da una regola di incompatibilità.
Scegliendo questa funzione appare una maschera che elenca, nel listbox "REGOLE" (vedi fig.6.2), le regole di incompatibilità definite nella funzione precedente:
Per inserire una regola di correzione:
1. eta = 1998 - datana (che significa l'età sarà uguale
a 1998 - data di nascita);
2. ateco = '10101' (che significa mettere il valore 10101 nella
variabile ateco).
La regola viene controllata sintatticamente al momento dell'inserimento e la numerazione associata è automatica.
E' possibile inserire più correzioni per una stessa incompatibilità, in questo modo si possono cambiare i valori di più variabili in funzione di un singolo errore.
Una variabile corretta da una regola di correzione rientra nei controlli successivi nel passo di check.
Per modificare una regola di correzione:
Da menu a tendina "File":
Figura 6.2 - La maschera per la gestione delle regole di correzione

Fig 6.3 La scelta della funzione per il check dei dati
6.2.1. Check e correzione dei dati
sono possibile tre scelte:
1) CHECKIl check e l'eventuale correzione dei dati, eseguibile dopo la fase di definizione delle variabili, liste, regole di incompatibilità e regole di correzioni, separa i dati grezzi, scelti con apposita maschera dall'utente, in dati esatti e dati errati, verificando per i record di input, l'incompatibilità descritta nelle regole relative.
Scegliendo la funzione "Check", il programma chiede di selezionare il file esterno di input per il passo di check.
Una volta selezionato con "apri", o cliccando due volte sul nome
del file scelto, viene generato nella cartella di progetto il file "tabgran.prm"
che contiene il nome dei file che saranno utilizzati nel passo di check,
e viene eseguito il programma di controllo e contemporanea correzione.
I record del file di input devono essere di lunghezza fissa.
Nel passaggio di check se anche una sola incompatibilità è
vera, e non esistono correzioni per quella incompatibilità, il record
viene registrato nel file degli errati "ferrati.dat" e il numero
della regola, che ha determinato l'errore, viene registrato nel file "ferrori.dat".
Se invece esistono regole di correzioni per l'incompatibilità
verificatasi, i record verranno registrati nel file "fcorretti.dat".
In questo passo, che esegue il programma "granada.exe", vengono usati i seguenti file esterni i cui nomi sono registrati nel file "tabgran.prm":
2) VISTA REGOLE IN USO
3) STATISTICA ERRORI
Il file esterno "fsyschk.dat" contiene la lista dei contatori dei record
letti, esatti, errati e corretti dell'ultimo passaggio di check effettuato.
Sono possibili le seguenti scelte:
Errore |
Causa |
| Errore apertura file xxx: | Il file xxx non esiste. |
| Lista non ordinata | Il file delle liste non è ordinato per posizione e lunghezza e vengono mostrati i due valori della lista non ordinati. |
| Liste troppo numerose | I valori di lista superano i 10000. |
L'integrazione, dall'approccio di correzione deterministica alla correzione effettuata con il metodo del donatore, si attua utilizzando le regole di correzione deterministica.
Vediamo come è possibile applicare l'integrazione tra i due metodi.
Dopo aver effettuato il passaggio di controllo deterministico "senza" correzioni, bisogna analizzare i risultati ottenuti e decidere quali sono le variabili che vogliamo, successivamente, sottoporre a correzione tramite donatore.
Per queste sole variabili scriviamo le regole di correzione che, in questo caso, possiamo definire "regole di impostazione dei caratteri di riconoscimento" poiché serviranno solamente a cambiare il valore delle variabili da correggere in caratteri specifici (vedi §7.1.1).
Una volta scritte le regole di correzione, possiamo nuovamente effettuare il passaggio di controllo e, questa volta di correzione deterministica o, se vogliamo, di impostazione, e otterremo il file dei dati "corretti" o, meglio, "flaggati", nel quale le variabili da sottoporre successivamente a correzione con donazione saranno chiaramente individuabili.
Chiudiamo l'approccio deterministico e lo riapriamo con il donatore.
Nella definizione delle variabili di correzione (vedi §7.1.1) scegliamo, tramite l'apposita listbox, le variabili da correggere tra quelle mostrate, che sono tutte le variabili definite nell'approccio di correzione deterministico e che, a loro volta, possono essere state migrate dall'approccio probabilistico, completando così l'integrazione tra i tre metodi.
Esempio:
Dopo aver effettuato un passaggio di check deterministico dei dati
decidiamo di correggere le variabili CAROCC , POSPRO e HADIP.
Decidiamo di assegnare alla prima il carattere "§", alla seconda
i caratteri "@@" e alla terza il carattere "#".
Attenzione! Il carattere scelto deve essere dato per tutta la lunghezza
della variabile; potremmo assegnare qualsiasi carattere, anche semplici
lettere maiuscole o minuscole.
Scriveremo allora le seguenti regole di correzione:
CAROCC = '§'
POSPRO = '@@'
HADIP = '#'
selezionando opportunamente le regole di incompatibilità in funzione delle quali vogliamo che vengano corrette le variabili.
Eseguiamo il passaggio di controllo e correzione.
Alla fine del passaggio il file "fcorretti.dat" avrà le variabili
impostate ai caratteri prescelti e potrà essere usato per la correzione
tramite donatore (vedi
cap.7).